﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using MJM.CBD.Conn;
using MJM.SPP.EntidadesNegocio;

namespace MJM.SPP.AccesoDatos
{
    public class GrupoUsuariosAD
    {
        public List<GrupoUsuariosEN> Listar()
        {
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_USUGRU_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            List<GrupoUsuariosEN> lst = new List<GrupoUsuariosEN>();
            SqlDataReader dr;
            try
            {
                cmd.Connection.Open();                
                dr = cmd.ExecuteReader();
                GrupoUsuariosEN obj;
                while (dr.Read())
                {
                    obj = new GrupoUsuariosEN();
                    obj.USUGRU_P_inID = dr.GetInt32(0);
                    obj.USUGRU_chNOMGRU = dr.GetString(1);
                    obj.USUGRU_chDESGRU = dr.GetString(2);
                    obj.SEGU_inFLAELI = dr.GetInt32(3);
                    try
                    {
                        obj.USUGRU_dtFECREG = dr.GetDateTime(4);
                    }
                    catch
                    {

                        obj.USUGRU_dtFECREG = DateTime.Now;
                    }
                    lst.Add(obj);
                }
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }

            return lst;
        }

        public int Modificar(GrupoUsuariosEN objGrupoUsuarioEN)
        {
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_WEB_USUGRU_Modificar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre,prmDescripcion,prmEliminado,prmID;

            try
            {
                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vUSUGRU_chNOMGRU";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = objGrupoUsuarioEN.USUGRU_chNOMGRU;
                cmd.Parameters.Add(prmNombre);

                prmDescripcion = cmd.CreateParameter();
                prmDescripcion.ParameterName = "@vUSUGRU_chDESGRU";
                prmDescripcion.SqlDbType = SqlDbType.VarChar;
                prmDescripcion.Value = objGrupoUsuarioEN.USUGRU_chDESGRU;
                cmd.Parameters.Add(prmDescripcion);

                prmEliminado = cmd.CreateParameter();
                prmEliminado.ParameterName = "@vSEGU_inFLAELI";
                prmEliminado.SqlDbType = SqlDbType.Int;
                prmEliminado.Value = objGrupoUsuarioEN.SEGU_inFLAELI;
                cmd.Parameters.Add(prmEliminado);

                prmID = cmd.CreateParameter();
                prmID.ParameterName = "@vUSUGRU_P_inID";
                prmID.SqlDbType = SqlDbType.Int;
                prmID.Value = objGrupoUsuarioEN.USUGRU_P_inID;
                cmd.Parameters.Add(prmID);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                return 0;
            }
            return 1;
        }

        public int Insertar(GrupoUsuariosEN objGrupoUsuarioEN)
        {
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_WEB_USUGRU_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre, prmDescripcion, prmCodigo, prmEliminado;
            int codigo=0;
            try
            {
                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vUSUGRU_chNOMGRU";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = objGrupoUsuarioEN.USUGRU_chNOMGRU;
                cmd.Parameters.Add(prmNombre);

                prmDescripcion = cmd.CreateParameter();
                prmDescripcion.ParameterName = "@vUSUGRU_chDESGRU";
                prmDescripcion.SqlDbType = SqlDbType.VarChar;
                prmDescripcion.Value = objGrupoUsuarioEN.USUGRU_chDESGRU;
                cmd.Parameters.Add(prmDescripcion);

                prmCodigo = cmd.CreateParameter();
                prmCodigo.Direction = ParameterDirection.ReturnValue;
                prmCodigo.SqlDbType = SqlDbType.Int;
                cmd.Parameters.Add(prmCodigo);

                prmEliminado = cmd.CreateParameter();
                prmEliminado.ParameterName = "@vSEGU_inFLAELI";
                prmEliminado.SqlDbType = SqlDbType.Int;
                prmEliminado.Value = objGrupoUsuarioEN.SEGU_inFLAELI;
                cmd.Parameters.Add(prmEliminado);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo = Convert.ToInt32(prmCodigo.Value);

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                return 0;
            }
            return codigo;
        }
    }
}
